Generally, a USB device works with a driver, which provides a data transfer channel from the application to the device. However, to develop an error-free driver is very complicated. Any problem with the driver might lead to a system crash. For this reason, the operating system is designed to provide built-in drivers to some typical USB devices, such as the Human Interface Device (HID) like mouse and keyboard. Therefore, if the non-typical USB devices, such as the USB Key, are designed as a human interface device, they can directly utilize the built-in drivers of the operating system, eliminating the complexity of design of drivers and related risks.
For the HID driver of the operating system, there are two approaches to access to the hardware device: Control Transfers and Interrupt Transfers, as defined by the USB Specification. Both Control Transfers and Interrupt Transfers are designed to best support trickle data transfers. The USB device as a human interface device cannot conduct bulk and high-speed data communication. When working on bulk data, the USB device as a human interface device cannot perform high-speed communication because the capacity of Interrupt Endpoint Buffers is not large enough.
In the USB Specification, Bulk Transfers are defined for bulk and high-speed data communication. Generally, the capacity of the buffers for Bulk Transfers is relatively large in the chip used by the USB device. But the HID class device cannot use the communication means of Bulk Transfers.
The chip with a USB interface has circuitries for various data transfer means inside. Each data transfer means corresponds to a circuitry, which is also referred to as “endpoint”. The endpoint that supports control transfers is named as the control endpoint. The endpoint that supports interrupt transfers is named as the interrupt endpoint. The endpoint that supports bulk transfers is named as the bulk endpoint.
When connected to a host, the USB device sends a set of data to the host. The set of data declares the type of the device and the supported data transfer means. The host recognizes the USB device through the descriptor (i.e. the set of data). Each descriptor contains the information of a device or one of its components. All USB peripherals must respond to the request for standard USB descriptors. The host requests the descriptor to the device through control transfers during enumeration.
The descriptors referenced by the present invention are:                The interface descriptor. It defines an interface between a USB device and a host, and indicates if the device is a human interface device and has any endpoint other than the control endpoint etc. The endpoint descriptor. It is required only if the device has any endpoint other than the control endpoint. It indicates the type of the endpoint, the address of the endpoint in the chip, the size of the endpoint's buffer, and the interval of the host's access to the endpoint.        The HID class descriptor. It is required only if the device is defined as a human interface device. It indicates the version number of the USB protocol supported by the device. It also indicates that if the device has private descriptors and the feature limitation to the private descriptors.        The report descriptor. It is required only if the device is defined as a human interface device. It indicates how the data is to be organized during the communication between the device and the host.        